package juanca.mole;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONObject;

import com.savagelook.android.JsonHelper;

import ClasesExtras.AdaptadorClientes;
import ClasesExtras.GetIpAddress;
import ClasesExtras.ItemClientes;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;

public class BuscarCliente extends Activity {

	private ListView lvClientes;
	private Activity activity;

	private String URL_BUSCAR_CLIENTES;
	public BuscarCliente self = this;
	public ArrayList<ItemClientes> Lista_clientes;
	public AdaptadorClientes adaptador;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.layout_buscar_cliente);

		lvClientes = (ListView) findViewById(R.id.lvClientes);

		activity = this;

	}

	@Override
	protected void onStart() {
		super.onStart();
		GetIpAddress direccion = new GetIpAddress(this);

		if (direccion.getDireccion() != null) {
			URL_BUSCAR_CLIENTES = direccion.getDireccion() + "/clientes.json";
			final ProgressDialog pd = ProgressDialog.show(this, null,
					this.getString(R.string.PbMsjListadoClientes), true, true);

			new Thread(new Runnable() {
				@Override
				public void run() {
					self.mostrarClientes(URL_BUSCAR_CLIENTES);
					Log.w("BuscaClientes", "carga el listado de clientes");
					pd.dismiss();

				}
			}).start();
		} else {
			new AlertDialog.Builder(this)
					.setIcon(android.R.drawable.ic_dialog_alert)
					.setTitle(R.string.tituloAlerta)
					.setMessage(R.string.msjErSinDireccion)
					.setPositiveButton(R.string.btnAceptar,
							new DialogInterface.OnClickListener() {// un
								// listener que al pulsar, cierre la
								// aplicacion
								@Override
								public void onClick(DialogInterface dialog,
										int which) {
									// Salir
									Intent intent = new Intent();
									intent.setClass(activity, Etapas.class);
									startActivity(intent);
								}
							}).show();
		}
	}

	/* Metodo que muestra clientes */
	private void mostrarClientes(String urlClientes) {
		JSONObject objCliente;
		JSONArray JsonClientes;
		Lista_clientes = new ArrayList<ItemClientes>();
		try {
			JsonClientes = JsonHelper.getJsonArrayFromUrl(urlClientes);
			objCliente = new JSONObject();

			for (int i = 0; i <= JsonClientes.length() - 1; i++) {
				objCliente = JsonClientes.getJSONObject(i);
				String idcliente = objCliente.getString("id");
				String nombrecliente = objCliente.getString("nombre");
				String direccioncliente = objCliente.getString("dirrecion");
				String telefonocliente = objCliente.getString("telefono");

				Lista_clientes.add(new ItemClientes(idcliente, nombrecliente,
						direccioncliente, telefonocliente));

			}

			runOnUiThread(new Runnable() {
				@Override
				public void run() {
					self.adaptador = new AdaptadorClientes(self, Lista_clientes);

					self.lvClientes.setAdapter(adaptador);
					self.lvClientes.setDividerHeight(2);

				}
			});

			lvClientes.setOnItemClickListener(new OnItemClickListener() {

				@Override
				public void onItemClick(AdapterView<?> parent, View v,
						int position, long arg3) {

					String[] datoCliente = new String[2];
					datoCliente[0] = Lista_clientes.get(position)
							.getIdCliente();
					datoCliente[1] = Lista_clientes.get(position).getNombre();

					Intent in = new Intent();
					in.setClass(self, EntregaMercancia.class);
					in.putExtra("datoCliente", datoCliente);
					self.startActivity(in);

				}
			});

		} catch (Exception e) {
			Log.e("BuscaClientes", "Error al cargar el listado de clientes: "
					+ e.fillInStackTrace());

			runOnUiThread(new Runnable() {
				@Override
				public void run() {

					new AlertDialog.Builder(self)
							.setIcon(android.R.drawable.ic_dialog_alert)
							.setTitle(R.string.tituloAlerta)
							.setMessage(R.string.msjERCargaListaCliente)
							.setPositiveButton(R.string.btnAceptar,
									new DialogInterface.OnClickListener() {
										@Override
										public void onClick(
												DialogInterface dialog,
												int which) {
											// Salir
											Intent in = new Intent();
											in.setClass(self, Etapas.class);
											self.startActivity(in);
										}
									}).show();

				}
			});

		}
	}

	/* Metodo que controla el boton atras */
	@Override
	public boolean onKeyUp(int keyCode, KeyEvent event) {

		if (keyCode == KeyEvent.KEYCODE_BACK) {

			// Salir
			Intent in = new Intent();
			in.setClass(self, Etapas.class);
			self.startActivity(in);

			return true;
		}

		return super.onKeyUp(keyCode, event);
	}

}
